During the past 60 years, computers have evolved from huge, single-processor machines that were capable of executing only a single program at a time and that lacked what is today considered to be basic operating-system functionalities to currently available distributed computer systems that may include large numbers of individual, discrete computer systems, each with multiple processors and terabytes or petabytes of electronic data-storage capacity and which are interconnected by high-bandwidth electronic communications media and communications subsystems. Basic operational parameters of computer systems, including data-storage capacity, processor bandwidth or available processor cycles per unit time, and data-transfer bandwidths through communications media and subsystems, continue to increase geometrically. Operating-system technologies have evolved in parallel with the rapid evolution of hardware technologies, and include sophisticated distributed-computing operating systems and distributed virtual-machine-monitor-based control systems that allow virtual machines and other computing tasks to be distributed, managed, and moved, while executing, among the discrete computer systems within very large distributed computer systems.
Distributed-computing technologies, while having evolved to provide greatly increased functionality and efficiency, are nonetheless constrained by fundamental distributed-computing constraints and inefficiencies, including constraints and inefficiencies associated with providing concurrent access by multiple processes running in multiple, discrete computer systems to commonly shared computing resources, including stored data in various types of shared data-storage devices. Many different technologies have been developed and refined to address many of these constraints, including various types of distributed locking protocols to serialize access to shared resources despite the lack of a reliable, common system clock within distributed systems. However, as with any computational system, the removal or satisfaction of such constraints is generally obtained at the cost of computational overhead. This computational overhead may accumulate during execution of higher-level functionalities, including configuration and management functionalities within a distributed computer system. Designers, developers, and users of distributed computer systems continue to seek more efficient approaches to underlying distributed-computing problems in order to increase the efficiency of distributed-computing configuration and management facilities.